package com.killLog.dao;

import com.killLog.dto.UserDto;
import com.killLog.model.Role;
import com.killLog.model.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
用户持久层接口
*/
@Mapper
public interface UserDao {
    /**
    更新用户状态
    */
    @Update("update t_user set u_status=#{targetStatus} where u_id=#{uId} and u_status=#{currentStatus}")
    int updateStatus(String uId, String currentStatus, String targetStatus);
    /**
    查询用户列表
    */
    List<User> findList(UserDto userDto);
    /**
     根据传入的账号信息中的id，判断该账号是否在数据库表中已经存在
    */
    @Select("select count(u_id) from t_user where u_id=#{uId}")
    boolean existsOne(String uId);
    /**
     判断用户状态是否合理
     */
    boolean existsValidStatus(String uId, String code);
    /**
    新增用户
    */
    @Insert("insert into t_user values(#{u_id},#{u_name},#{u_pwd},#{u_status})")
    int insertOne(UserDto userDto);
    /**
    删除用户
    */
    void delete(String uId);
    /**
     * @Description: 获取用户角色列表信息
     * @Param: userDto 
     * @Param code 
     * @return java.util.List<com.killLog.model.Role>
    */
    List<Role> findRoleList(String uId, String code);

    /**
     * @Description: 编辑用户->新增用户角色
     * @Param u_id 
     * @Param roleIds 
     * @return void
    */
    void insertUserRoles(@Param("u_id") String u_id, @Param("roleIds")Integer[] roleIds);
    /**
     * @Description: 编辑用户->删除用户角色
     * @Param u_id 
     * @Param ro_id 
     * @return void
    */
    @Delete("delete from t_ur where u_id = #{u_id} and ro_id = #{ro_id}")
    void deleteUserRole(@Param("u_id") String u_id, @Param("ro_id")Integer ro_id);
    /**
     * @Description: 编辑用户->修改用户角色
     * @Param dto 
     * @return void
    */
    @Update("update t_user set u_name=#{u_name} where u_id=#{u_id}")
    void updateOne(UserDto dto);
}